DynamoDB একটি fully managed NoSQL ডেটাবেস সার্ভিস, যা AWS-এর অংশ এবং এটি অত্যন্ত নিরাপদ, স্কেলযোগ্য এবং পারফরম্যান্ট। DynamoDB তে সিকিউরিটি এবং এক্সেস কন্ট্রোল অত্যন্ত গুরুত্বপূর্ণ, কারণ ডেটাবেসে সংরক্ষিত ডেটা অনেক মূল্যবান এবং সঠিকভাবে নিরাপত্তা ব্যবস্থাপনা না করলে তা ক্ষতিগ্রস্ত বা অননুমোদিত ব্যবহার হতে পারে।
DynamoDB সিকিউরিটি এবং এক্সেস কন্ট্রোলের জন্য বেশ কিছু শক্তিশালী বৈশিষ্ট্য প্রদান করে, যার মাধ্যমে আপনি ডেটার নিরাপত্তা নিশ্চিত করতে পারেন। এখানে DynamoDB তে সিকিউরিটি এবং এক্সেস কন্ট্রোলের মূল দিকগুলি আলোচনা করা হলো।
AWS IAM (Identity and Access Management) ব্যবহার করে আপনি DynamoDB এর সাথে এক্সেস কন্ট্রোল পরিচালনা করতে পারেন। IAM আপনাকে ব্যবহারকারী এবং অ্যাপ্লিকেশনগুলির জন্য সুনির্দিষ্ট অনুমতি সেট করার ক্ষমতা দেয়।
IAM Policy উদাহরণ: DynamoDB টেবিলের জন্য একটি IAM পলিসি তৈরি করা যেতে পারে যা শুধু Read-Only অ্যাক্সেস দেয়:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "dynamodb:Scan",
"Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/YourTableName"
}
]
}
এটি সেই ব্যবহারকারী বা রোলকে Scan অপারেশন চালানোর অনুমতি দেবে, কিন্তু লেখার (Write) কোনো অনুমতি থাকবে না।
DynamoDB ডেটা Encryption at Rest প্রদান করে, যা ডেটার নিরাপত্তা নিশ্চিত করে যখন তা ডেটাবেসে সংরক্ষিত থাকে। AWS KMS (Key Management Service) ব্যবহার করে DynamoDB টেবিলগুলির জন্য ডেটা এনক্রিপশন পরিচালনা করা হয়।
Encryption in Transit নিশ্চিত করে যে ডেটা AWS ক্লাউডের মধ্যে ট্রান্সফার হওয়া অবস্থায় এনক্রিপ্ট করা থাকে। এটি TLS (Transport Layer Security) প্রটোকল ব্যবহার করে করা হয়।
VPC Endpoints ব্যবহার করে আপনি DynamoDB এর সাথে আপনার Virtual Private Cloud (VPC)-এর মধ্যে নিরাপদ এবং প্রাইভেট সংযোগ তৈরি করতে পারেন। এটি PrivateLink ব্যবহার করে, যার মাধ্যমে আপনি ইন্টারনেটের বাইরে DynamoDB-কে অ্যাক্সেস করতে পারবেন।
DynamoDB-তে আপনি Resource-Level Permissions এবং Access Control Lists (ACLs) ব্যবহার করে আরো সূক্ষ্ম এক্সেস কন্ট্রোল প্রয়োগ করতে পারেন। আপনি নির্দিষ্ট টেবিল বা ইনডেক্সের জন্য এক্সেস কন্ট্রোল তৈরি করতে পারবেন, যা ব্যবহারকারীদের বা অ্যাপ্লিকেশনগুলিকে শুধুমাত্র প্রয়োজনীয় ডেটায় এক্সেস দেয়।
একটি বিশেষ টেবিলের জন্য শুধুমাত্র নির্দিষ্ট ব্যবহারকারীদের পড়ার (read) অনুমতি দেওয়া যেতে পারে, আবার অন্যদের শুধু লেখার (write) অনুমতি দেওয়া যেতে পারে।
AWS CloudTrail এবং Amazon CloudWatch ব্যবহার করে আপনি DynamoDB এর কার্যক্রম মনিটর করতে পারেন এবং সিকিউরিটি অডিট লগ তৈরি করতে পারেন।
DynamoDB AWS Key Management Service (KMS) এর মাধ্যমে কাস্টম এনক্রিপশন কী তৈরি এবং পরিচালনা করার ক্ষমতা প্রদান করে। আপনি আপনার ডেটাকে এনক্রিপ্ট করার জন্য নিজস্ব KMS কী ব্যবহার করতে পারেন।
DynamoDB সিকিউরিটি এবং এক্সেস কন্ট্রোল একটি ব্যাপক এবং শক্তিশালী সিস্টেম যা আপনার ডেটার নিরাপত্তা নিশ্চিত করে। IAM পলিসি, এনক্রিপশন, VPC Endpoint, এবং CloudTrail এর মতো সিকিউরিটি ফিচার ব্যবহার করে আপনি আপনার ডেটাবেস এবং ডেটা এক্সেসকে শক্তিশালীভাবে নিয়ন্ত্রণ করতে পারবেন।
AWS Identity and Access Management (IAM) একটি শক্তিশালী সেবা যা আপনাকে AWS রিসোর্সের উপর প্রবেশাধিকার (access) নিয়ন্ত্রণ করতে সাহায্য করে। এর মাধ্যমে আপনি কাস্টম পলিসি তৈরি করতে পারেন, ব্যবহারকারী এবং গ্রুপ তৈরি করতে পারেন, এবং নির্দিষ্ট রিসোর্সের জন্য বিস্তারিত অ্যাক্সেস অনুমতি প্রদান বা প্রতিরোধ করতে পারেন। IAM আপনাকে ব্যবহারকারীদের এবং গ্রুপের উপর নিয়ন্ত্রণ রাখতে সক্ষম করে, যার ফলে আপনি নিরাপত্তা নিশ্চিত করতে পারেন।
IAM এর মাধ্যমে access control অনেক গুরুত্বপূর্ণ কাজ সম্পন্ন করা হয়, যেমন:
উদাহরণ:
IAM Policies হল JSON ফরম্যাটে লেখা কাস্টম সেটিংস বা বিধি যা নির্দিষ্ট একটি রিসোর্স বা রিসোর্স গ্রুপে অ্যাক্সেস নিয়ন্ত্রণ করে। AWS এর বেশিরভাগ রিসোর্সের জন্য পূর্বনির্ধারিত পলিসি রয়েছে, তবে আপনি যদি আপনার কাস্টম প্রয়োজনীয়তা অনুযায়ী বিশেষ অনুমতি দিতে চান, তবে আপনি নিজে কাস্টম পলিসি তৈরি করতে পারেন।
একটি সাধারণ পলিসি উদাহরণ:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "dynamodb:Query",
"Resource": "arn:aws:dynamodb:region:account-id:table/YourTableName"
}
]
}
এই পলিসিটি একটি নির্দিষ্ট DynamoDB টেবিলের জন্য Query অপারেশনকে অনুমতি দেয়।
IAM Roles হল এমন একটি সেটিং যা বিশেষভাবে অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়, যেখানে একটি Role নির্দিষ্ট অ্যাক্সেস অনুমতি (policies) দিয়ে ব্যবহারকারীদের বা সার্ভিসকে অনুমতি প্রদান করা হয়।
Role প্রধানত ব্যবহৃত হয়:
উদাহরণ: আপনি একটি EC2 ইনস্ট্যান্স তৈরি করতে পারেন যা নিজে থেকে S3 বাকে অ্যাক্সেস করতে পারে, তবে EC2 ইনস্ট্যান্সের অ্যাক্সেস প্রদান করতে একটি IAM Role তৈরি করতে হবে।
DynamoDB তে আইটেম বা টেবিল অ্যাক্সেস নিয়ন্ত্রণের জন্য আপনি IAM ব্যবহার করতে পারেন। আপনি DynamoDB টেবিলের উপর অ্যাক্সেস কন্ট্রোল করতে IAM পলিসি এবং রোল ব্যবহার করে এটি নিশ্চিত করতে পারেন যে কে কী ধরনের অ্যাক্সেস পাবে।
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:BatchWriteItem"
],
"Resource": "arn:aws:dynamodb:region:account-id:table/YourTableName"
}
]
}
এই পলিসিটি একটি নির্দিষ্ট DynamoDB টেবিলের জন্য PutItem, UpdateItem, এবং BatchWriteItem কার্যক্রমের অনুমতি দেয়।
আপনি DynamoDB ছাড়াও S3 এবং Lambda রিসোর্সগুলির অ্যাক্সেসও IAM ব্যবহার করে নিয়ন্ত্রণ করতে পারেন।
MFA হল একটি অতিরিক্ত সুরক্ষা স্তর যা IAM ব্যবহারকারীর লগইন প্রক্রিয়ায় প্রয়োগ করা হয়। এটি পাসওয়ার্ডের পাশাপাশি একাধিক তথ্য যাচাই করতে ব্যবহৃত হয়, যেমন মোবাইল ফোনে পাঠানো কোড।
Least Privilege Principle হল সুরক্ষিত অ্যাক্সেস কন্ট্রোলের একটি গুরুত্বপূর্ণ ধারণা। এর মানে হল যে আপনি শুধুমাত্র এমন অনুমতি প্রদান করবেন যা কাজটি সম্পন্ন করার জন্য প্রয়োজনীয়। এই পলিসির মাধ্যমে আপনি অ্যাক্সেস সীমিত করেন এবং সিস্টেমে সম্ভাব্য ক্ষতির ঝুঁকি কমান।
AWS IAM আপনাকে সিস্টেমের নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল নিশ্চিত করতে সাহায্য করে। আপনি IAM ব্যবহার করে:
IAM সঠিকভাবে কনফিগার করলে আপনি AWS রিসোর্সগুলির নিরাপত্তা নিশ্চিত করতে পারবেন এবং নিরাপদে অ্যাপ্লিকেশন এবং সার্ভিস পরিচালনা করতে পারবেন।
ডেটাবেস নিরাপত্তা নিশ্চিত করার জন্য Encryption একটি গুরুত্বপূর্ণ পদ্ধতি। Amazon DynamoDB ডেটা সুরক্ষিত রাখতে Encryption at Rest এবং Encryption in Transit উভয়ের সমর্থন দেয়। এটি নিশ্চিত করে যে আপনার ডেটা শুধুমাত্র অনুমোদিত ব্যবহারকারীদের কাছে অ্যাক্সেসযোগ্য এবং এটি হ্যাকিং বা অন্যান্য সাইবার আক্রমণ থেকে সুরক্ষিত।
Encryption at Rest হল সেই পদ্ধতি যেখানে ডেটা যখন স্টোর বা বিশ্রামে থাকে (অর্থাৎ, যখন ডেটাবেসের ডেটা ডিস্কে সঞ্চিত থাকে), তখন তা এনক্রিপ্ট করা হয়। এর ফলে ডেটা কোনো অবস্থাতেই এক্সপোজ বা কম্প্রোমাইজ হওয়ার ঝুঁকি কমে যায়। DynamoDB স্বয়ংক্রিয়ভাবে Encryption at Rest চালু রাখে এবং এতে AWS KMS (Key Management Service) ব্যবহৃত হয়।
Encryption in Transit হল সেই পদ্ধতি, যেখানে ডেটা যখন এক স্থান থেকে অন্য স্থানে পাঠানো হয় (অর্থাৎ, যখন ডেটা ট্রান্সফার হয়), তখন সেটি এনক্রিপ্ট করা হয়। Encryption in Transit ডেটার গোপনীয়তা এবং অখণ্ডতা নিশ্চিত করতে সাহায্য করে, বিশেষত যখন ডেটা ক্লাউডের মধ্যে বা ইন্টারনেটের মাধ্যমে আদান-প্রদান হয়।
DynamoDB স্বয়ংক্রিয়ভাবে এই দুটি এনক্রিপশন ব্যবস্থা সরবরাহ করে, যা আপনাকে নিরাপত্তা নিশ্চিত করতে এবং কমপ্লায়েন্স মেনে চলতে সাহায্য করে।
VPC Endpoint Integration একটি নিরাপদ এবং দক্ষ উপায় যা আপনাকে Amazon DynamoDB এর সাথে আপনার Virtual Private Cloud (VPC)-এ সরাসরি যোগাযোগ স্থাপন করতে সহায়তা করে। এটি AWS এর সিকিউরিটি এবং পারফরম্যান্সকে শক্তিশালী করে, কারণ আপনি পাবলিক ইন্টারনেটের পরিবর্তে AWS ইনফ্রাস্ট্রাকচারে ডেটাবেস অ্যাক্সেস করতে পারেন। এই প্রক্রিয়াটি ব্যবহারকারীদের ডেটা ট্রান্সফার এবং অ্যাপ্লিকেশন যোগাযোগকে আরও নিরাপদ, দ্রুত, এবং নির্ভরযোগ্য করে তোলে।
VPC Endpoint হলো একটি AWS সেবা যা আপনাকে আপনার VPC এর মধ্যে নির্দিষ্ট AWS সার্ভিসের জন্য ট্র্যাফিক পাঠাতে অনুমতি দেয়, পাবলিক ইন্টারনেটের পরিবর্তে সরাসরি অ্যামাজন সিস্টেমের মাধ্যমে।
AWS-তে দুই ধরনের VPC Endpoint রয়েছে:
VPC Endpoint দ্বারা DynamoDB এর সাথে যোগাযোগ করা হলে, আপনার DynamoDB API কলগুলি পাবলিক ইন্টারনেটের পরিবর্তে শুধুমাত্র আপনার VPC এর মধ্যে সুরক্ষিতভাবে রুট করা হয়। এতে করে:
curl
বা AWS SDK ব্যবহার করে অ্যাক্সেস যাচাই করুন।আপনি যদি EC2 ইনস্ট্যান্স থেকে DynamoDB অ্যাক্সেস করতে চান এবং সেই অ্যাক্সেস শুধুমাত্র আপনার VPC এর মধ্যে সীমাবদ্ধ রাখতে চান, তাহলে আপনি একটি VPC Endpoint কনফিগার করে এই DynamoDB অ্যাক্সেসকে নিরাপদ এবং দ্রুত করতে পারেন। এটি আপনার ক্লাউড অ্যাপ্লিকেশনকে পাবলিক ইন্টারনেট থেকে বিচ্ছিন্ন রাখে এবং Private IP এর মাধ্যমে যোগাযোগ নিশ্চিত করে।
VPC Endpoint ব্যবহার করার ফলে আপনি নিরাপদ, দ্রুত, এবং স্কেলেবল উপায়ে DynamoDB ব্যবহার করতে পারবেন, বিশেষত যদি আপনি আপনার অ্যাপ্লিকেশনটিকে এক্সপোজ না করতে চান অথবা পাবলিক ইন্টারনেটের উপর নির্ভর করতে না চান।
AWS Key Management Service (KMS) হল একটি পরিষেবা যা আপনাকে ডেটা এনক্রিপশন কীগুলি তৈরি, ম্যানেজ এবং নিয়ন্ত্রণ করতে সাহায্য করে। DynamoDB-এর সাথে KMS Integration ব্যবহারের মাধ্যমে, আপনি আপনার ডেটাকে encryption at rest নিরাপদে সংরক্ষণ করতে পারবেন।
DynamoDB স্বয়ংক্রিয়ভাবে encryption at rest সমর্থন করে, তবে যদি আপনি কাস্টম এনক্রিপশন কীগুলি (Custom KMS Key) ব্যবহার করতে চান, তবে আপনাকে AWS KMS এর সাহায্যে এটি কনফিগার করতে হবে।
যখন আপনি DynamoDB টেবিল তৈরি করবেন, তখন আপনি KMS এনক্রিপশন কীগুলি কনফিগার করতে পারেন। এর মাধ্যমে আপনি নির্ধারণ করতে পারবেন কোন AWS managed key অথবা Customer managed key (CMK) ব্যবহার করা হবে।
import boto3
# DynamoDB client তৈরি
dynamodb = boto3.client('dynamodb')
# টেবিল তৈরি করার সময় কাস্টম KMS Key ব্যবহার
response = dynamodb.create_table(
TableName='YourTableName',
KeySchema=[
{
'AttributeName': 'ID',
'KeyType': 'HASH' # Partition Key
}
],
AttributeDefinitions=[
{
'AttributeName': 'ID',
'AttributeType': 'S'
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
},
SSESpecification={
'Enabled': True,
'SSEType': 'KMS',
'KMSMasterKeyId': 'arn:aws:kms:region:account-id:key/key-id' # KMS Key ARN
}
)
print(response)
DynamoDB Streams-এর মাধ্যমে আপনি আপনার টেবিলের ডেটার পরিবর্তনগুলি ট্র্যাক করতে পারেন। আপনি যদি KMS এনক্রিপশন ব্যবহার করেন, তবে DynamoDB Streams এর ডেটা এনক্রিপ্টেড থাকবে। যখন আপনি স্ট্রিমের ডেটা অ্যাক্সেস করবেন, তখন সেই ডেটা ডিক্রিপ্ট করতে KMS Key ব্যবহার করা হবে।
import boto3
# DynamoDB Streams এর মাধ্যমে KMS দ্বারা এনক্রিপ্টেড ডেটা পাওয়ার উদাহরণ
dynamodbstreams = boto3.client('dynamodbstreams')
# Stream ARN এর মাধ্যমে ডেটা পড়া
response = dynamodbstreams.get_records(
StreamArn='arn:aws:dynamodb:region:account-id:stream/stream-id'
)
# এনক্রিপ্টেড ডেটা ডিক্রিপ্ট করার জন্য KMS ব্যবহার করুন
# (এটি KMS API কলের মাধ্যমে করা হয়)
KMS-এ আপনি কাস্টম কীগুলি রোটেট করতে পারেন। যখন আপনার টেবিলের KMS Key রোটেট হবে, তখন DynamoDB স্বয়ংক্রিয়ভাবে আপনার ডেটাকে পুরানো কীগুলি থেকে নতুন কীগুলির সাথে সংযোগ করবে। এই রোটেশন প্রক্রিয়া ডেটার নিরাপত্তা নিশ্চিত করে এবং কোনও ডেটার অ্যাক্সেস ব্যাহত হয় না।
Key Rotation এবং Audit Logs এর মাধ্যমে আপনি আপনার কীগুলির ব্যবহারের উপর নজর রাখতে পারেন এবং নিরাপত্তা কনফিগারেশনগুলি সঠিকভাবে বজায় রাখতে পারেন।
common.read_more